package club.vann.mock.kafka;

import club.vann.mock.common.exception.ProtobufCaseException;
import java.util.function.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;

/** Kafka 业务方法接口。 */
public interface KafkaService {
  /**
   * 向 Kafka Consumer 注册回调方法。
   *
   * @param topic Kafka Topic
   * @param consumerRecordConsumer 回调方法
   */
  void register(String topic, Consumer<ConsumerRecord<String, byte[]>> consumerRecordConsumer);

  /**
   * 解析 Kafka 消息。
   *
   * @param bytes 字节数组
   * @param clazz 类型
   * @return 实例
   * @param <T> 实例类型
   * @throws ProtobufCaseException 解析异常
   */
  <T> T parseFrom(byte[] bytes, Class<T> clazz) throws ProtobufCaseException;
}
